package rhc.spider.crawler;

import rhc.spider.engine.Engine;
import rhc.spider.middlewareManage.impl.DownloadMiddlewareManage;
import rhc.spider.middlewareManage.impl.ExtensionMiddlewareManage;
import rhc.spider.middlewareManage.impl.SpiderMiddlewareManage;
import rhc.spider.schedule.Schedule;
import rhc.spider.setting.Setting;
import rhc.spider.signal.SignalManage;
import rhc.spider.spider.Spider;

/**
 * @author lenovo1
 *
 */
public interface Crawler {

	/**获取引擎
	 * @return
	 */
	Engine getEngine();
	
	/**设置引擎
	 * @param engine
	 */
	void setEngine(Engine engine);
	
	/**获取配置
	 * @return
	 */
	Setting getSetting();
	
	/**获取spider
	 * @return
	 */
	Spider getSpider();
	
	/**
	 * 设置爬虫
	 */
	void setSpider(Spider spider);
	
	/**获取调度器
	 * @return
	 */
	Schedule getSchedule();
	
	/**
	 * 设置调度器
	 */
	void setSchedule(Schedule schedule);
	
	/**获取信号管理器
	 * @return
	 */
	SignalManage getSignalManage();
	
	/**获取下载器中间件管理器
	 * @return
	 */
	DownloadMiddlewareManage getDownloadMiddlewareManage();
	
	/**获取spider中间件管理器
	 * @return
	 */
	SpiderMiddlewareManage getSpiderMiddlewareManage();
	
	/**获取扩展管理器
	 * @return
	 */
	ExtensionMiddlewareManage getExtensionMiddlewareManage();
	
	/**
	 * 开始
	 */
	void start();
	
	/**
	 * 停止
	 */
	void stop();
	
	/**
	 * 暂停
	 */
	void pause();
	
	/**
	 * 恢复
	 */
	void regain();
}
